From 9d7d8b6bf3dcc7b8322bc4d636d793fe46c106e8 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 18 Feb 2026 13:58:15 +0100 Subject: [PATCH] Fix sorting --- ...key_alter_book_sort_key_author_and_more.py | 28 +++++++++++++++++++ src/catalogue/models/book.py | 4 +-- src/catalogue/models/tag.py | 2 +- .../migrations/0005_alter_note_sort_key.py | 18 ++++++++++++ src/dictionary/models.py | 2 +- .../migrations/0004_alter_author_sort_key.py | 18 ++++++++++++ src/pdcounter/models.py | 2 +- 7 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 src/catalogue/migrations/0054_alter_book_sort_key_alter_book_sort_key_author_and_more.py create mode 100644 src/dictionary/migrations/0005_alter_note_sort_key.py create mode 100644 src/pdcounter/migrations/0004_alter_author_sort_key.py diff --git a/src/catalogue/migrations/0054_alter_book_sort_key_alter_book_sort_key_author_and_more.py b/src/catalogue/migrations/0054_alter_book_sort_key_alter_book_sort_key_author_and_more.py new file mode 100644 index 000000000..d59c8ef44 --- /dev/null +++ b/src/catalogue/migrations/0054_alter_book_sort_key_alter_book_sort_key_author_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.8 on 2026-02-18 12:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('catalogue', '0053_alter_book_pages_alter_book_read_time'), + ] + + operations = [ + migrations.AlterField( + model_name='book', + name='sort_key', + field=models.CharField(db_collation='C', db_index=True, editable=False, max_length=120, verbose_name='klucz sortowania'), + ), + migrations.AlterField( + model_name='book', + name='sort_key_author', + field=models.CharField(db_collation='C', db_index=True, default='', editable=False, max_length=120, verbose_name='klucz sortowania wg autora'), + ), + migrations.AlterField( + model_name='tag', + name='sort_key', + field=models.CharField(db_collation='C', db_index=True, max_length=120, verbose_name='klucz sortowania'), + ), + ] diff --git a/src/catalogue/models/book.py b/src/catalogue/models/book.py index 1570c76cd..375c79a8e 100644 --- a/src/catalogue/models/book.py +++ b/src/catalogue/models/book.py @@ -38,9 +38,9 @@ bofh_storage = BofhFileSystemStorage() class Book(models.Model): """Represents a book imported from WL-XML.""" title = models.CharField('tytuł', max_length=32767) - sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True, editable=False) + sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True, db_collation='C', editable=False) sort_key_author = models.CharField( - 'klucz sortowania wg autora', max_length=120, db_index=True, editable=False, default='') + 'klucz sortowania wg autora', max_length=120, db_index=True, db_collation='C', editable=False, default='') slug = models.SlugField('slug', max_length=120, db_index=True, unique=True) common_slug = models.SlugField('wspólny slug', max_length=120, db_index=True) language = models.CharField('kod języka', max_length=3, db_index=True, default=app_settings.DEFAULT_LANGUAGE) diff --git a/src/catalogue/models/tag.py b/src/catalogue/models/tag.py index fb90a7b89..d7b02de2b 100644 --- a/src/catalogue/models/tag.py +++ b/src/catalogue/models/tag.py @@ -52,7 +52,7 @@ class Tag(models.Model): fragment themes (motifs) and some book hierarchy related kludges.""" name = models.CharField('nazwa', max_length=120, db_index=True) slug = models.SlugField('slug', max_length=120, db_index=True) - sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True) + sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True, db_collation='C') category = models.CharField( 'kategoria', max_length=50, blank=False, null=False, db_index=True, choices=TAG_CATEGORIES) description = models.TextField('opis', blank=True) diff --git a/src/dictionary/migrations/0005_alter_note_sort_key.py b/src/dictionary/migrations/0005_alter_note_sort_key.py new file mode 100644 index 000000000..3df99aed3 --- /dev/null +++ b/src/dictionary/migrations/0005_alter_note_sort_key.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.8 on 2026-02-18 12:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dictionary', '0004_auto_20151221_1225'), + ] + + operations = [ + migrations.AlterField( + model_name='note', + name='sort_key', + field=models.CharField(db_collation='C', db_index=True, max_length=128), + ), + ] diff --git a/src/dictionary/models.py b/src/dictionary/models.py index 1068a9648..a3ac1ac96 100644 --- a/src/dictionary/models.py +++ b/src/dictionary/models.py @@ -25,7 +25,7 @@ class Qualifier(models.Model): class Note(models.Model): """Represents a single annotation from a book.""" html = models.TextField() - sort_key = models.CharField(max_length=128, db_index=True) + sort_key = models.CharField(max_length=128, db_index=True, db_collation='C') fn_type = models.CharField(max_length=10, db_index=True) qualifiers = models.ManyToManyField(Qualifier) language = models.CharField(max_length=10, db_index=True) diff --git a/src/pdcounter/migrations/0004_alter_author_sort_key.py b/src/pdcounter/migrations/0004_alter_author_sort_key.py new file mode 100644 index 000000000..2e427718b --- /dev/null +++ b/src/pdcounter/migrations/0004_alter_author_sort_key.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.8 on 2026-02-18 12:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pdcounter', '0003_alter_author_options_alter_bookstub_options_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='author', + name='sort_key', + field=models.CharField(db_collation='C', db_index=True, max_length=120, verbose_name='klucz sortowania'), + ), + ] diff --git a/src/pdcounter/models.py b/src/pdcounter/models.py index 622dc46d1..4bdfc8dc2 100644 --- a/src/pdcounter/models.py +++ b/src/pdcounter/models.py @@ -13,7 +13,7 @@ from search.utils import UnaccentSearchVector class Author(models.Model): name = models.CharField('imię i nazwisko', max_length=50, db_index=True) slug = models.SlugField('slug', max_length=120, db_index=True, unique=True) - sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True) + sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True, db_collation='C') description = models.TextField('opis', blank=True) death = models.IntegerField('rok śmierci', blank=True, null=True) gazeta_link = models.CharField(blank=True, max_length=240) -- 2.20.1